package vista.ventanaEstadoTarea;

import java.awt.Button;
import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.Font;
import javax.swing.BoxLayout;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import modelo.tareas.Tarea;

/**
 * @author Cristian
 * Ventana que es creada cuando una tarea tiene tareas compuesta.
 */

@SuppressWarnings("serial")
public class VentanaTareaCompuesta extends JFrame {

	// Variables  *********************************************************** //
	
	private Tarea modelo;
	private JLabel labelTarea, estado, nombreTareaPredecesora, 
				  labelListaTareas, labelPredecesora;
	private Button botonTareaPredecesora, botonAtras;
	private JPanel panel1, panel2, panel3, panel4;
	private JComboBox listaTareas;
		
	//Constructor *********************************************************** //

	public VentanaTareaCompuesta(Tarea tarea){
		super("Tarea que compone: "+ tarea.getNombre());
		this.modelo = tarea;
		crearVentana();
	}	

	/**
	 * Agrega a la ventana los paneles con su respectivo layaout y 
	 * tambien los botones, labels, textField y un comboBox.
	 * En todos los casos el layaout es el FlowLayou.
	 */
	public void agregarComponentes(Container contentPane){
					
		panel1.setLayout(new FlowLayout());
		panel1.add(labelTarea);
		contentPane.add(panel1);
			
		panel2.setLayout(new FlowLayout());
		panel2.add(labelListaTareas);
		panel2.add(listaTareas);
		panel2.add(botonTareaPredecesora);
		contentPane.add(panel2);
		
		panel3.setLayout(new FlowLayout());
		panel3.add(labelPredecesora);
		panel3.add(nombreTareaPredecesora);
		panel3.add(botonTareaPredecesora); 
		contentPane.add(panel3);
		
		panel4.setLayout(new FlowLayout());
		panel4.add(botonAtras);
		contentPane.add(panel4);

	}
	
	/**
	 * Crea la ventana. Al panel principal se le asigna un BoxLayout, agregando elementos
	 * de manaera vertical.
	 * Se le asigna al boton su accion.
	 */
	@SuppressWarnings("deprecation")
	public void crearVentana(){
		
		botonTareaPredecesora = new Button("Seleccionar");
		botonAtras = new Button("  Atras  ");
		
		panel1 = new JPanel();
		panel2 = new JPanel();
		panel3 = new JPanel();
		panel4 = new JPanel();
			
		labelPredecesora = new JLabel("Tarea Predecesora: ");
		labelListaTareas = new JLabel("Tareas que componen: ");
		labelTarea = new JLabel(this.modelo.getNombre());
		estado = new JLabel(this.modelo.getEstado().getNombre());
			
		if(this.modelo.getPredecesor() == null){
			nombreTareaPredecesora = new JLabel("No tiene predecesora");
			nombreTareaPredecesora.disable();
			botonTareaPredecesora.disable();
		}else{
			nombreTareaPredecesora = new JLabel(this.modelo.getPredecesor().getNombre());
		}
		
		Font nombreTarea = labelTarea.getFont();
		labelTarea.setFont(new Font(nombreTarea.getFontName(), nombreTarea.getStyle(), 30));
		
		listaTareas = new JComboBox();
		if(this.modelo.getTareas() == null){
			listaTareas.addItem("Es una tarea Simple");
			listaTareas.setOpaque(true);
			listaTareas.disable();
		}else{
			for(Tarea tarea1: this.modelo.getTareas()){
				listaTareas.addItem(tarea1);
			}
		}
			
		Container contentPane = getContentPane();
		contentPane.setLayout(new BoxLayout(contentPane, BoxLayout.PAGE_AXIS));
		agregarComponentes(contentPane);

		//Acciones al presionar los botones
		botonTareaPredecesora.addActionListener(new BotonAbrirTareaPredecesora(this));
		botonAtras.addActionListener(new BotonAtras(this));
		listaTareas.addActionListener(new BotonSeleccionarTareaCompuesta(this));
		
		pack();
		setDefaultCloseOperation( JFrame.DISPOSE_ON_CLOSE);
		setSize(500, 350);
		validate();
		setVisible(true);
			
	}

	//GET&SET     *********************************************************** //
	
	public JLabel getEstado(){
		return estado;
	}
		
	public JFrame getFrame(){
		return this;
	}

	public void setModelo(Tarea modelo) {
		this.modelo = modelo;
	}

	public Tarea getModelo() {
		return modelo;
	}
		
	public Tarea getPredecesor(){
		return this.getModelo().getPredecesor();
	}

	public JComboBox getListaTareas() {
		return this.listaTareas;
	}
}
